package com.xd.study.activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.xd.study.R;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by DGF on 2015/4/30.
 * OptionsMenu
 * ContextMenu
 * SubMenu
 */
public class MenuActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu);

        ListView listView = (ListView)this.findViewById(R.id.menu_listview);

        List<String> data = new ArrayList<>();
        for (int i=0;i<5;i++){
            data.add("文件"+i);
        }
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                this, android.R.layout.simple_list_item_1, data);

        listView.setAdapter(arrayAdapter);

        /**
         * 为ListView注册ContextMenu
         */
        this.registerForContextMenu(listView);
    }

    /**
     * 添加OptionsMenu
     * @param menu
     * @return
     */
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        /**
         * 静态添加菜单
         */
//        getMenuInflater().inflate(R.menu.mymenu, menu);

        /**
         * 动态添加菜单
         * groupId : 用于分组
         * itemId : 菜单项的ID
         * order : 排序
         */
//        menu.add(1, 100, 1, "菜单一");
//        MenuItem item2 = menu.add(1, 101, 1, "菜单二");
//        item2.setTitle("修改标题");
//        item2.setIcon(R.drawable.ic_launcher); // API>=11，不显示图标
//        menu.add(1, 102, 1, "菜单三");
//        menu.add(1, 103, 1, "菜单四");
//        menu.add(1, 104, 1, "菜单五");

        /**
         * 动态添加子菜单
         * 使用不同的主题，显示方式不一样
         * Theme.DeviceDefault -- 右上角有三个点，点击显示菜单，子菜单无标题栏，无图标
         * Theme.Black -- 使用功能键，显示菜单，子菜单有标题栏，有图标
         * Theme.Black.NoTitleBar -- 使用功能键，显示菜单，子菜单有标题栏，有图标，显示方式略有不同
         */
//        SubMenu fileMenu = menu.addSubMenu("文件");
//        SubMenu editMenu = menu.addSubMenu("编辑");
//
//        fileMenu.setHeaderTitle("文件操作");
//        fileMenu.setHeaderIcon(R.drawable.ic_launcher);
//        fileMenu.add(1, 1, 1, "新建");
//        fileMenu.add(1, 2, 1, "打开");
//        fileMenu.add(1, 3, 1, "保存");
//
//        editMenu.setHeaderTitle("编辑");
//        editMenu.setHeaderIcon(R.drawable.ic_launcher);
//        editMenu.add(2, 1, 1, "复制");
//        editMenu.add(2, 2, 1, "剪切");
//        editMenu.add(2, 3, 1, "粘帖");
//        editMenu.add(2, 4, 1, "重命名");

        /**
         * 静态添加子菜单
         **/
        getMenuInflater().inflate(R.menu.mysubmenu, menu);

        return true;
    }

    /**
     * OptionsMenu菜单选择的事件
     * @param featureId
     * @param item
     * @return
     */
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {

        /**
         * 适用于静态加载菜单
         */
//        switch (item.getItemId()){
//            case R.id.menu_option_1:
//                Toast.makeText(MenuActivity.this, "点击了菜单一", Toast.LENGTH_SHORT).show();
//                break;
//            case R.id.menu_option_2:
//                Toast.makeText(MenuActivity.this, "点击了菜单二", Toast.LENGTH_SHORT).show();
//                break;
//        }

        /**
         * 适用于动态加载菜单
         */
//        switch (item.getItemId()){
//            case 100:
//                Toast.makeText(MenuActivity.this, "点击了菜单一，弹出ListView界面", Toast.LENGTH_SHORT).show();
//                Intent intent = new Intent(MenuActivity.this, ListViewActivity.class);
//                item.setIntent(intent);
//                break;
//            case 101:
//                Toast.makeText(MenuActivity.this, "点击了菜单二", Toast.LENGTH_SHORT).show();
//                break;
//            case 102:
//                Toast.makeText(MenuActivity.this, "点击了菜单三", Toast.LENGTH_SHORT).show();
//                break;
//            case 103:
//                Toast.makeText(MenuActivity.this, "点击了菜单四", Toast.LENGTH_SHORT).show();
//                break;
//            case 104:
//                Toast.makeText(MenuActivity.this, "点击了菜单五", Toast.LENGTH_SHORT).show();
//                break;
//        }

        /**
         * 动态添加子菜单
         */
//        switch (item.getGroupId()){
//            case 1:
//                switch (item.getItemId()){
//                    case 1:
//                        Toast.makeText(this, "点击 新建", Toast.LENGTH_SHORT).show();
//                        break;
//                    case 2:
//                        Toast.makeText(this, "点击 打开", Toast.LENGTH_SHORT).show();
//                        break;
//                    case 3:
//                        Toast.makeText(this, "点击 保存", Toast.LENGTH_SHORT).show();
//                        break;
//                }
//                break;
//            case 2:
//                switch (item.getItemId()){
//                    case 1:
//                        Toast.makeText(this, "点击 复制", Toast.LENGTH_SHORT).show();
//                        break;
//                    case 2:
//                        Toast.makeText(this, "点击 剪切", Toast.LENGTH_SHORT).show();
//                        break;
//                    case 3:
//                        Toast.makeText(this, "点击 粘贴", Toast.LENGTH_SHORT).show();
//                        break;
//                    case 4:
//                        Toast.makeText(this, "点击 重命名", Toast.LENGTH_SHORT).show();
//                        break;
//                }
//                break;
//        }

        /**
         * 静态添加子菜单
         */
        switch (item.getItemId()){
            case R.id.submenu_new:
                Toast.makeText(this, "点击 新建", Toast.LENGTH_SHORT).show();
                break;
            case R.id.submenu_open:
                Toast.makeText(this, "点击 打开", Toast.LENGTH_SHORT).show();
                break;
            case R.id.submenu_save:
                Toast.makeText(this, "点击 保存", Toast.LENGTH_SHORT).show();
                break;
            case R.id.submenu_copy:
                Toast.makeText(this, "点击 复制", Toast.LENGTH_SHORT).show();
                break;
            case R.id.submenu_cut:
                Toast.makeText(this, "点击 剪切", Toast.LENGTH_SHORT).show();
                break;
            case R.id.submenu_paste:
                Toast.makeText(this, "点击 粘贴", Toast.LENGTH_SHORT).show();
                break;
        }

        return super.onMenuItemSelected(featureId, item);
    }

    /**
     * 添加contextmenu
     * @param menu
     * @param v
     * @param menuInfo
     */
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);

        /**
         * 动态添加菜单项
         */
        menu.setHeaderTitle("文件操作");
        menu.setHeaderIcon(R.drawable.ic_launcher);
//        menu.add(1, 1, 1, "复制");
//        menu.add(1, 2, 1, "剪切");
//        menu.add(1, 3, 1, "粘帖");
//        menu.add(1, 4, 1, "重命名");

        /**
         * 静态添加菜单项         *
         */
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.mymenu, menu);
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {

        /**
         * 动态加载菜单项
         */
//        switch (item.getItemId()){
//            case 1:
//                Toast.makeText(MenuActivity.this, "点击 复制", Toast.LENGTH_SHORT).show();
//                break;
//            case 2:
//                Toast.makeText(MenuActivity.this, "点击 剪切", Toast.LENGTH_SHORT).show();
//                break;
//            case 3:
//                Toast.makeText(MenuActivity.this, "点击 粘帖", Toast.LENGTH_SHORT).show();
//                break;
//            case 4:
//                Toast.makeText(MenuActivity.this, "点击 重命名", Toast.LENGTH_SHORT).show();
//                break;
//        }

        /**
         * 适用于静态加载菜单
         */
        switch (item.getItemId()){
            case R.id.menu_option_1:
                Toast.makeText(MenuActivity.this, "点击了菜单一", Toast.LENGTH_SHORT).show();
                break;
            case R.id.menu_option_2:
                Toast.makeText(MenuActivity.this, "点击了菜单二", Toast.LENGTH_SHORT).show();
                break;
        }


        return super.onContextItemSelected(item);
    }
}
